﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Collections.Generic;


namespace MoviTiendas.Interfaz
{
    /**
     * Clase para pasar parámetros entre páginas.
     * Para usarla se debe reiniciar la lista de parámetros y luego agregarlos.
     * Se debe hacer Cast cuando se saque el objeto.
     * los cast son:  objeto as ClaseEsperada.
     */
    public class ParametroPaginas
    {
        // ------------------------------------------------------------------------------------
        // Atributos
        // ------------------------------------------------------------------------------------

        /**
         * Lista de parámetros que se quieren pasar a la siguiente página
         */
        public static List<Object> parametros { get; set; }

        /**
         * Nombre de la página a la cual se le quieren pasar los parámetros
         */
        public static String claseObjetivo { get; set; }



        // ------------------------------------------------------------------------------------
        // Métodos
        // ------------------------------------------------------------------------------------
        
        /**
         * Reinicia la lista de parámetros, y reasigna el atributo claseObjetivo de acuerdo al String que llega como parámetro.
         * @nombreClaseObjetivo - Nombre de la clase a la que se van a enviar los parámetros.
         */
        public static void reiniciarParametros(String nombreClaseObjetivo)
        {
            claseObjetivo = nombreClaseObjetivo;
            parametros = new List<object>();
        }

        /**
         * Agrega un parametro a la lista de parametros
         * @ob - Object que se quiere agregar a la lista de parámetros que se van a enviar a la siguiente página
         */
        public static void agregarParametro(Object ob)
        {
            parametros.Add(ob);
        }
        
        /**
         * Retorna el parámetro en la posición dada. 
         * @indice - Índice del parámetro que se quiere conocer. Retorna -1 si no hay parámetros o si el índice es inválido.
         */
        public static Object darParametroConIndice(int indice)
        {
            if (parametros == null || indice < 0 || indice >= parametros.Count)
                return -1;
            else
                return parametros[indice];
        }
    }
}
